home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 101-125 / scopedisk122 / bassub / finfunc.sub < prev    next >
Text File  |  1995-03-19  |  2KB  |  99 lines

  1. 'Several functions for doing interest rate functions
  2. '
  3. 'rate = interest rate as decimal
  4. 'numpds = number of periods in years
  5. 'monthflag% = 0 for annual, 1 for monthly payments
  6. REM FNfw1
  7. 'Future Worth of $1.00
  8. DEF FNfw1(rate,numpds,monthflag%)
  9.   IF monthflag%=1
  10.     FNfw1=(1+rate/12)^(numpds*12)
  11.   ELSE
  12.     FNfw1=(1+rate)^numpds
  13.   END IF
  14. END DEF
  15. REM FNpw1
  16. 'Present Worth of $1.00
  17. DEF FNpw1(rate,numpds,monthflag%)
  18.   IF monthflag%=1
  19.     FNpw1=1/FNfw1(rate,numpds,1)
  20.   ELSE
  21.     FNpw1=1/FNfw1(rate,numpds,0)
  22.   END IF
  23. END DEF
  24. REM FNfwa
  25. 'Future Worth of $1.00 per period
  26. DEF FNfwa(rate,numpds,monthflag%)
  27.     IF monthflag%=1 THEN
  28.         FNfwa=((1+rate/12)^(numpds*12)-1)/(rate/12)
  29.     ELSE
  30.         FNfwa=((1+rate)^numpds-1)/rate
  31.     END IF
  32. END DEF
  33. REM FNitao
  34. 'Installment to Amortize $1.00
  35. DEF FNitao(rate,numpds,monthflag%)
  36.   IF monthflag%=1
  37.     FNitao=1/((1-(1/(1+rate/12)^(numpds*12)))/(rate/12))
  38.   ELSE
  39.     FNitao=1/((1-(1/(1+rate)^numpds))/rate)
  40.   END IF
  41. END DEF
  42. REM FNpwa
  43. 'Present Worth of $1.00 per period
  44. DEF FNpwa(rate,numpds,monthflag%)
  45.     FNpwa=1/FNitao(rate,numpds,monthflag%)
  46. END DEF
  47. REM FNsff
  48. 'Sinking Fund Factor
  49. DEF FNsff(rate,numpds,monthflag%)
  50.     FNsff=1/FNfwa(rate,numpds,monthflag%)
  51. END DEF
  52. REM FNbal
  53. 'Balance of loan at end of holdpds
  54. DEF FNbal(rate,numpds,holdpds,monthflag%)
  55.   IF monthflag%=1
  56.     FNbal=FNitao(rate,numpds,1)/FNitao(rate,numpds-holdpds,1)
  57.   ELSE
  58.     FNbal=FNitao(rate,numpds,0)/FNitao(rate,numpds-holdpds,0)
  59.   END IF
  60. END DEF
  61. REM irr
  62. 'Internal Rate of Return
  63. 'cost = initial investment cost
  64. 'ncf() = one dimensional array of cashflows [beginning index is 1]
  65. 'ret = returns IRR or very small number if failed
  66. REM Internal Rate of Return Algorithm
  67. REM
  68. SUB irr(cost,numpds,monthflag%,ncf(1),ret)
  69.     IF cost<0 then cost=(-cost)
  70.   IF monthflag%=1
  71.     pds=12*numpds
  72.   ELSE
  73.     pds=numpds
  74.   END IF
  75.   limit%=100
  76.   smalli=0
  77.   DO WHILE limit%>0
  78.     sum=cost
  79.     denom=0
  80.     FOR jj%=1 TO pds
  81.       pval=ncf(jj%)*EXP(smalli*jj%)
  82.       sum=sum-pval
  83.       denom=denom+(pval*jj%)
  84.     NEXT jj%
  85.     deltai=sum/denom
  86.     smalli=smalli+deltai
  87.     test=ABS(deltai)-0.00005
  88.     IF test<=0 THEN
  89.       ret=EXP(-smalli)-1
  90.       EXIT SUB
  91.     ELSEIF test>0 THEN
  92.       limit%=limit%-1
  93.     ELSE
  94.       ret=1.0E+30
  95.       EXIT SUB
  96.     END IF
  97.   LOOP
  98. END SUB
  99.